This is Kara’s second pass at looking at the Taves data, looking only at participant’s endorsements of whether or not they had had certain experiences (not their assessment of what they meant, etc.).

Notes: per our conversation with Nikki, we are dropping one question (#53), which was a repeated question in all sites except for China.

Overall counts

First, let’s look at the overall counts of “yes” responses, by site:

Joining, by = "taves_subj"

And now let’s compare each country to the country with the next-most “yes” responses: contrast #1 will be US vs. Thailand, #2 will be Thailand vs. China, etc.:


Call:
lm(formula = total ~ taves_ctry, data = d_counts)

Residuals:
    Min      1Q  Median      3Q     Max 
-28.414  -7.391  -0.463   7.586  40.679 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  21.3959     0.5157  41.488  < 2e-16 ***
taves_ctry1   1.1988     0.8196   1.463 0.144133    
taves_ctry2   1.4471     0.4895   2.956 0.003252 ** 
taves_ctry3   1.0723     0.3078   3.483 0.000536 ***
taves_ctry4   1.7546     0.2647   6.629 8.29e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 11.88 on 533 degrees of freedom
Multiple R-squared:  0.1099,    Adjusted R-squared:  0.1032 
F-statistic: 16.45 on 4 and 533 DF,  p-value: 1.021e-12

This approach suggests that all of these comparisons are significant, except for the US vs. Thailand (p = 0.144).

Polychoric factor analysis

Factor loadings

Matrix was not positive definite, smoothing was done
Joining, by = "question"
Joining, by = "question"

Here’s a plot of an exploratory factor analysis using polychoric correlations (since we’re working with yes/no responses), an oblique rotation (“oblimin,” which allows factors to correlate with each other), and a “weighted least squares” factoring method (because other methods throw convergence errors).

It’s very important to note that this might not be the “right” number of factors to extract here - different guidelines made different suggestions, ranging from 2 or 3 factors up to 17. 8 factors seemed like something of a middle ground, and seemed to produce sensible results.

Factor scores

Matrix was not positive definite, smoothing was doneJoining, by = "taves_subj"

Here’s a plot of factor scores, by country, using the factor analysis solution illustrated above. The light, colorful dots are individual participants; the block dots are means by country and 95% bootstrapped confidence intervals. For each factor I printed out the text of the item that loaded most strongly on that factor - see the previous graph for more about the relationships between items and factors.

Joining, by = "taves_subj"
Joining, by = "question"

Averages (0-1)

Here’s a plot of averages (0-1), by country, using the factor analysis solution illustrated above. The light, colorful dots are individual participants; the block dots are means by country and 95% bootstrapped confidence intervals. For each factor I printed out the text of the item that loaded most strongly on that factor - see the previous graph (2 graphs back) for more about the relationships between items and factors.

Raw data

The following plots show raw data: how many participants said yes to each question, broken down by country. I’ve split up the questions into which factor they loaded most strongly on (see top left corner of each of the following plots). The dotted line marks the 50% point (50% of participants in that country said “yes” to this question). Note that this does not take into account missing data - i.e., the proportion of “no” responses is not necessarily equal to 1 - the proportion of “yes” responses.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

Using alpha for a discrete variable is not advised.

LS0tCnRpdGxlOiAiS1cgc2Vjb25kIHBhc3MgYXQgVGF2ZXMgZGF0YSIKZGF0ZTogMjAxOC0xMi0xMApvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpUaGlzIGlzIEthcmEncyBzZWNvbmQgcGFzcyBhdCBsb29raW5nIGF0IHRoZSBUYXZlcyBkYXRhLCBsb29raW5nIG9ubHkgYXQgcGFydGljaXBhbnQncyBlbmRvcnNlbWVudHMgb2Ygd2hldGhlciBvciBub3QgdGhleSBoYWQgaGFkIGNlcnRhaW4gZXhwZXJpZW5jZXMgKG5vdCB0aGVpciBhc3Nlc3NtZW50IG9mIHdoYXQgdGhleSBtZWFudCwgZXRjLikuCgpgYGB7ciBnbG9iYWxfb3B0aW9ucywgaW5jbHVkZSA9IEZ9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPUYsIHdhcm5pbmc9RiwgY2FjaGU9RiwgbWVzc2FnZT1GKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KHBzeWNoKQpsaWJyYXJ5KGZhY3RvZXh0cmEpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBGfQpkMCA8LSByZWFkX2V4Y2VsKCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvVGVtcGxldG9uIEdyYW50L0RBVEEgV1JBTkdMSU5HL1RhdmVzL2RhdGEvVGF2ZXNfZnVsbF9kYXRhc2V0Lnhsc3giLCBzaGVldCA9IDUpWy0xLF0gIyByZW1vdmUgcXVlc3Rpb24gdGV4dAoKcXVlc3Rpb25fa2V5IDwtIHJlYWRfZXhjZWwoIi9Vc2Vycy9rd2Vpc21hbi9Eb2N1bWVudHMvUmVzZWFyY2ggKFN0YW5mb3JkKS9Qcm9qZWN0cy9UZW1wbGV0b24gR3JhbnQvREFUQSBXUkFOR0xJTkcvVGF2ZXMvZGF0YS9UYXZlc19mdWxsX2RhdGFzZXQueGxzeCIsIHNoZWV0ID0gMylbLDE6NV0gIyBvbmx5IHJlbGV2YW50IGNvbHVtbnMKCm5faXRlciA8LSA1MDAwCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBGfQpkX2Jhc2UgPC0gZDAgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHNlbGVjdCh0YXZlc19zdWJqLCB0YXZlc18wMTp0YXZlc182MGUpICU+JQogIHNlbGVjdCgtZW5kc193aXRoKCJhIiksIC1lbmRzX3dpdGgoImIiKSwgLWVuZHNfd2l0aCgiYyIpLCAKICAgICAgICAgLWVuZHNfd2l0aCgiZCIpLCAtZW5kc193aXRoKCJlIikpICU+JQogIGRpc3RpbmN0KCkgJT4lCiAgZmlsdGVyKHRhdmVzX3N1YmogIT0gIjQwNTQ4IikgJT4lICMgcmVtb3ZlIG9uZSBkdXBsaWNhdGUKICAjIGNvbHVtbl90b19yb3duYW1lcygidGF2ZXNfc3ViaiIpICU+JQogIG11dGF0ZV9hdCh2YXJzKC10YXZlc19zdWJqKSwKICAgICAgICAgICAgZnVucyhmYWN0b3IodG9sb3dlciguKSwgbGV2ZWxzID0gYygibm8iLCAieWVzIikpKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoLXRhdmVzX3N1YmopLAogICAgICAgICAgICBmdW5zKG51bSA9IGFzLm51bWVyaWMoLikgLSAxKSkgJT4lCiAgY29sdW1uX3RvX3Jvd25hbWVzKCJ0YXZlc19zdWJqIikgJT4lCiAgc2VsZWN0KC1zdGFydHNfd2l0aCgidGF2ZXNfNTMiKSkKCmRfYmFzZV9udW0gPC0gZF9iYXNlICU+JQogIHNlbGVjdChlbmRzX3dpdGgoIl9udW0iKSkKYGBgCgpOb3RlczogcGVyIG91ciBjb252ZXJzYXRpb24gd2l0aCBOaWtraSwgd2UgYXJlIGRyb3BwaW5nIG9uZSBxdWVzdGlvbiAoIzUzKSwgd2hpY2ggd2FzIGEgcmVwZWF0ZWQgcXVlc3Rpb24gaW4gYWxsIHNpdGVzIGV4Y2VwdCBmb3IgQ2hpbmEuCgoKIyBPdmVyYWxsIGNvdW50cwoKRmlyc3QsIGxldCdzIGxvb2sgYXQgdGhlIG92ZXJhbGwgY291bnRzIG9mICJ5ZXMiIHJlc3BvbnNlcywgYnkgc2l0ZToKCmBgYHtyfQpkX2NvdW50cyA8LSBkX2Jhc2VfbnVtICU+JSAKICBzZWxlY3QoZW5kc193aXRoKCJfbnVtIikpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigidGF2ZXNfc3ViaiIpICU+JQogIGdhdGhlcihxdWVzdGlvbiwgcmVzcG9uc2UsIC10YXZlc19zdWJqKSAlPiUKICBncm91cF9ieSh0YXZlc19zdWJqKSAlPiUKICBzdW1tYXJpc2UodG90YWwgPSBzdW0ocmVzcG9uc2UsIG5hLnJtID0gVCkpICU+JQogIHVuZ3JvdXAoKSAlPiUKICBsZWZ0X2pvaW4oZDAgJT4lIHNlbGVjdCh0YXZlc19zdWJqLCB0YXZlc19jdHJ5KSkgJT4lCiAgZGlzdGluY3QoKSAlPiUKICBtdXRhdGUodGF2ZXNfY3RyeSA9IGZhY3Rvcih0YXZlc19jdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlVTIiwgIlRoYWlsYW5kIiwgIkNoaW5hIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2hhbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9jb3VudHMgJT4lIAogIGdyb3VwX2J5KHRhdmVzX2N0cnkpICU+JSAKICBzdW1tYXJpc2UobiA9IG4oKSwKICAgICAgICAgICAgbWVhbiA9IG1lYW4odG90YWwsIG5hLnJtID0gVCksCiAgICAgICAgICAgIHNkID0gc2QodG90YWwsIG5hLnJtID0gVCksCiAgICAgICAgICAgIG1lZGlhbiA9IG1lZGlhbih0b3RhbCwgbmEucm0gPSBUKSkgJT4lCiAgZGF0YS5mcmFtZSgpCmBgYAoKQW5kIG5vdyBsZXQncyBjb21wYXJlIGVhY2ggY291bnRyeSB0byB0aGUgY291bnRyeSB3aXRoIHRoZSBuZXh0LW1vc3QgInllcyIgcmVzcG9uc2VzOiBjb250cmFzdCAjMSB3aWxsIGJlIFVTIHZzLiBUaGFpbGFuZCwgIzIgd2lsbCBiZSBUaGFpbGFuZCB2cy4gQ2hpbmEsIGV0Yy46CgpgYGB7cn0KY29udHJhc3RzKGRfY291bnRzJHRhdmVzX2N0cnkpIDwtIGNvbnRyLmhlbG1lcnQoNSkKIyBjb250cmFzdHMoZF9jb3VudHMkdGF2ZXNfY3RyeSkKCnIgPC0gbG0odG90YWwgfiB0YXZlc19jdHJ5LCBkX2NvdW50cykKc3VtbWFyeShyKQpgYGAKClRoaXMgYXBwcm9hY2ggc3VnZ2VzdHMgdGhhdCBhbGwgb2YgdGhlc2UgY29tcGFyaXNvbnMgYXJlIHNpZ25pZmljYW50LCBleGNlcHQgZm9yIHRoZSBVUyB2cy4gVGhhaWxhbmQgKF9wXyA9IGByIHJvdW5kKHN1bW1hcnkocikkY29lZmZpY2llbnRzWzIsIDRdLCAzKWApLgoKIyBQb2x5Y2hvcmljIGZhY3RvciBhbmFseXNpcwoKYGBge3IsIGluY2x1ZGUgPSBGfQojIFdMUyBpcyB0aGUgZmlyc3QgbWV0aG9kIHRyaWVkIHRoYXQgZG9lc24ndCB0aHJvdWdoIGNvbnZlcmdlbmNlL3Njb3JlIGVycm9ycwpmYS5wYXJhbGxlbChkX2Jhc2VfbnVtLCBjb3IgPSAicG9seSIsIGZtID0gIndscyIpIApgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KVlNTKGRfYmFzZV9udW0sIGNvciA9ICJwb2x5Iiwgcm90YXRlID0gIm9ibGltaW4iLCBmbSA9ICJ3bHMiKQpgYGAKCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CiMgbWFrZSBmdW5jdGlvbiBmb3IgaW1wbGVtZW50aW5nIGNyaXRlcmlhCmNoZWNrX29rIDwtIGZ1bmN0aW9uKHAsIGspIHsKICBhIDwtIChwLWspXjIKICBiIDwtIHArawogIHJldHVybihpZmVsc2UoYT5iLCBUUlVFLCBGQUxTRSkpCn0KCm1heF9vayA8LSBmdW5jdGlvbihwKSB7CiAgZGZfY2hlY2sgPC0gZGF0YS5mcmFtZSgpCiAgZm9yKGkgaW4gMTpwKXsKICAgIGRmX2NoZWNrW2ksImNoZWNrIl0gPC0gY2hlY2tfb2socCxpKQogIH0KICBtYXggPC0gZGZfY2hlY2sgJT4lIGZpbHRlcihjaGVjaykgJT4lIG5yb3coKQogIHJldHVybihtYXgpCn0KCnJldGVuX2Z1biA8LSBmdW5jdGlvbihkZiwgcm90X3R5cGUgPSBjKCJvYmxpbWluIiwgInZhcmltYXgiLCAibm9uZSIpLAogICAgICAgICAgICAgICAgICAgICAgZm1fdHlwZSA9IGMoIm1pbnJlcyIsICJNTCIsICJ3bHMiKSl7CiAgCiAgIyBmaWd1cmUgb3V0IG1heCBudW1iZXIgb2YgZmFjdG9ycyB0byByZXRhaW4KICBuX3ZhciA8LSBsZW5ndGgobmFtZXMoZGYpKQogIG1heF9rIDwtIG1heF9vayhuX3ZhcikKICAKICAjIHJ1biBlZmEgd2l0aCBtYXggZmFjdG9ycywgdW5yb3RhdGVkCiAgZmFfdW5yb3QgPC0gZmEoZGYsIG5mYWN0b3JzID0gbWF4X2ssIHJvdGF0ZSA9ICJub25lIiwgCiAgICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgaW1wdXRlID0gIm1lZGlhbiIpCiAgZWlnZW4gPC0gZmFfdW5yb3QkVmFjY291bnRlZCAlPiUKICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW0iKSAlPiUKICAgIGdhdGhlcihmYWN0b3IsIHZhbHVlLCAtcGFyYW0pICU+JQogICAgc3ByZWFkKHBhcmFtLCB2YWx1ZSkgJT4lCiAgICBmaWx0ZXIoYFNTIGxvYWRpbmdzYCA+IDEsIGBQcm9wb3J0aW9uIEV4cGxhaW5lZGAgPiAwLjA1KQogIHJldGFpbl9rIDwtIG5yb3coZWlnZW4pCiAgCiAgZmFfcm90IDwtIGZhKGRmLCBuZmFjdG9ycyA9IHJldGFpbl9rLCByb3RhdGUgPSByb3RfdHlwZSwKICAgICAgICAgICAgICAgc2NvcmVzID0gInRlbkJlcmdlIiwgaW1wdXRlID0gIm1lZGlhbiIpCiAgCiAgbG9hZGluZ3MgPC0gZmFfcm90JGxvYWRpbmdzW10gJT4lCiAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICByb3duYW1lc190b19jb2x1bW4oImNhcGFjaXR5IikgJT4lCiAgICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogICAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogICAgdG9wX24oMSwgYWJzKGxvYWRpbmcpKSAlPiUKICAgIHVuZ3JvdXAoKSAlPiUKICAgIGNvdW50KGZhY3RvcikKICByZXRhaW5fa19maW5hbCA8LSBucm93KGxvYWRpbmdzKQogIAogIHJldHVybihyZXRhaW5fa19maW5hbCkKfQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KcmV0ZW5fZnVuKGRfYmFzZV9udW0sIHJvdF90eXBlID0gIm9ibGltaW4iLCBmbV90eXBlID0gIndscyIpCmBgYAoKIyMgRmFjdG9yIGxvYWRpbmdzCgpgYGB7cn0KbG9hZGluZ3MgPC0gZmEoZF9iYXNlX251bSwgY29yID0gInBvbHkiLCBuZmFjdG9ycyA9IDgsIHJvdGF0ZSA9ICJvYmxpbWluIiwgZm0gPSAid2xzIikkbG9hZGluZ3NbXSAlPiUgCiAgZmEuc29ydCgpICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInF1ZXN0aW9uIikgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uID0gZ3N1YigiX251bSIsICIiLCBxdWVzdGlvbikpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1xdWVzdGlvbikKCmxvYWRpbmdzX29yZGVyIDwtIGxvYWRpbmdzICU+JQogIGdyb3VwX2J5KHF1ZXN0aW9uKSAlPiUKICB0b3BfbigxLCBhYnMobG9hZGluZykpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigib3JkZXIiKSAlPiUKICBtdXRhdGUob3JkZXIgPSBhcy5udW1lcmljKG9yZGVyKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChxdWVzdGlvbiwgb3JkZXIpCmBgYAoKYGBge3J9CmxvYWRpbmdzX25hbWVkIDwtIGxvYWRpbmdzICU+JQogIGZ1bGxfam9pbihsb2FkaW5nc19vcmRlcikgJT4lCiAgbGVmdF9qb2luKHF1ZXN0aW9uX2tleSAlPiUKICAgICAgICAgICAgICByZW5hbWUocXVlc3Rpb24gPSBgVmFyaWFibGUgTmFtZSAtIFZFUlNJT04gMSAtLSBhbGwgdmFyaWFibGVzIGluIHZlcnNpb24yIGhhdmUgYmVlbiByZW5hbWVkIHRvIHJlZmxlY3QgdGhlc2UgdmFyYWlibGUgbmFtZXNgLAogICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbl90ZXh0ID0gYFF1ZXN0aW9uIC0gVkVSU0lPTiAxYCkpICU+JQogIHNlbGVjdChxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIsIGZhY3RvciwgbG9hZGluZykgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCJcciIsICIgIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCJcbiIsICIgIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCIgICIsICIgIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCLigJrDhMO0IiwgIiciLCBxdWVzdGlvbl90ZXh0KSwKICAgICAgICAgcXVlc3Rpb25fdGV4dCA9IGdzdWIoIuKAmsOEw7oiLCAiJyIsIHF1ZXN0aW9uX3RleHQpLAogICAgICAgICBxdWVzdGlvbl90ZXh0ID0gZ3N1Yigi4oCaw4TDuSIsICInIiwgcXVlc3Rpb25fdGV4dCkpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBsb2FkaW5nc19uYW1lZApgYGAKCkhlcmUncyBhIHBsb3Qgb2YgYW4gZXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzIHVzaW5nIHBvbHljaG9yaWMgY29ycmVsYXRpb25zIChzaW5jZSB3ZSdyZSB3b3JraW5nIHdpdGggeWVzL25vIHJlc3BvbnNlcyksIGFuIG9ibGlxdWUgcm90YXRpb24gKCJvYmxpbWluLCIgd2hpY2ggYWxsb3dzIGZhY3RvcnMgdG8gY29ycmVsYXRlIHdpdGggZWFjaCBvdGhlciksIGFuZCBhICJ3ZWlnaHRlZCBsZWFzdCBzcXVhcmVzIiBmYWN0b3JpbmcgbWV0aG9kIChiZWNhdXNlIG90aGVyIG1ldGhvZHMgdGhyb3cgY29udmVyZ2VuY2UgZXJyb3JzKS4KCkl0J3MgdmVyeSBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoaXMgbWlnaHQgbm90IGJlIHRoZSAicmlnaHQiIG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QgaGVyZSAtIGRpZmZlcmVudCBndWlkZWxpbmVzIG1hZGUgZGlmZmVyZW50IHN1Z2dlc3Rpb25zLCByYW5naW5nIGZyb20gMiBvciAzIGZhY3RvcnMgdXAgdG8gMTcuIDggZmFjdG9ycyBzZWVtZWQgbGlrZSBzb21ldGhpbmcgb2YgYSBtaWRkbGUgZ3JvdW5kLCBhbmQgc2VlbWVkIHRvIHByb2R1Y2Ugc2Vuc2libGUgcmVzdWx0cy4KCmBgYHtyLCBmaWcud2lkdGggPSA4LCBmaWcuYXNwID0gMX0KZ2dwbG90KGxvYWRpbmdzX25hbWVkICU+JQogICAgICAgICBtdXRhdGUoZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzQiLCAiV0xTNSIsICJXTFMxIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0xTNiIsICJXTFMzIiwgIldMUzciLCAiV0xTOCIpKSksCiAgICAgICBhZXMoeCA9IGZhY3RvciwgeSA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICBmaWxsID0gbG9hZGluZykpICsKICBnZW9tX3RpbGUoY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGZvcm1hdChyb3VuZChsb2FkaW5nLCAyKSwgbnNtYWxsID0gMikpKSArCiAgc2NhbGVfZmlsbF9kaXN0aWxsZXIocGFsZXR0ZSA9ICJSZFlsQnUiLCBsaW1pdHMgPSBjKC0xLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IGd1aWRlX2NvbG9yYmFyKGJhcmhlaWdodCA9IDIwKSkgKwogIHNjYWxlX3hfZGlzY3JldGUocG9zaXRpb24gPSAidG9wIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgbGFicyh4ID0gIiIsIHkgPSAiIikKYGBgCgojIyBGYWN0b3Igc2NvcmVzCgpgYGB7cn0Kc2NvcmVzIDwtIGZhKGRfYmFzZV9udW0sIGNvciA9ICJwb2x5IiwgbmZhY3RvcnMgPSA4LCByb3RhdGUgPSAib2JsaW1pbiIsIGZtID0gIndscyIpJHNjb3Jlc1tdICU+JSAKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJ0YXZlc19zdWJqIikgJT4lCiAgZ2F0aGVyKGZhY3Rvciwgc2NvcmUsIC10YXZlc19zdWJqKSAlPiUKICBsZWZ0X2pvaW4oZDAgJT4lIHNlbGVjdCh0YXZlc19zdWJqLCB0YXZlc19jdHJ5KSkgJT4lCiAgbXV0YXRlKHRhdmVzX2N0cnkgPSBmYWN0b3IodGF2ZXNfY3RyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsICJDaGluYSIsICJWYW51YXR1IikpLAogICAgICAgICBmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiV0xTMiIsICJXTFM0IiwgIldMUzUiLCAiV0xTMSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzYiLCAiV0xTMyIsICJXTFM3IiwgIldMUzgiKSkpCmBgYAoKSGVyZSdzIGEgcGxvdCBvZiBmYWN0b3Igc2NvcmVzLCBieSBjb3VudHJ5LCB1c2luZyB0aGUgZmFjdG9yIGFuYWx5c2lzIHNvbHV0aW9uIGlsbHVzdHJhdGVkIGFib3ZlLiBUaGUgbGlnaHQsIGNvbG9yZnVsIGRvdHMgYXJlIGluZGl2aWR1YWwgcGFydGljaXBhbnRzOyB0aGUgYmxvY2sgZG90cyBhcmUgbWVhbnMgYnkgY291bnRyeSBhbmQgOTUlIGJvb3RzdHJhcHBlZCBjb25maWRlbmNlIGludGVydmFscy4gRm9yIGVhY2ggZmFjdG9yIEkgcHJpbnRlZCBvdXQgdGhlIHRleHQgb2YgdGhlIGl0ZW0gdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGF0IGZhY3RvciAtIHNlZSB0aGUgcHJldmlvdXMgZ3JhcGggZm9yIG1vcmUgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBpdGVtcyBhbmQgZmFjdG9ycy4KCmBgYHtyLCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMC42N30Kc2NvcmVzICU+JQogIGdyb3VwX2J5KGZhY3RvciwgdGF2ZXNfY3RyeSkgJT4lCiAgbGFuZ2NvZzo6bXVsdGlfYm9vdF9zdGFuZGFyZChjb2wgPSAic2NvcmUiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzQiLCAiV0xTNSIsICJXTFMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzYiLCAiV0xTMyIsICJXTFM3IiwgIldMUzgiKSkpICU+JQogIGdncGxvdChhZXMoeCA9IHRhdmVzX2N0cnkpKSArCiAgZmFjZXRfd3JhcCh+IGZhY3RvciwgbnJvdyA9IDIpICsKICBnZW9tX3BvaW50KGRhdGEgPSBzY29yZXMsIAogICAgICAgICAgICAgYWVzKHkgPSBzY29yZSwgY29sb3IgPSB0YXZlc19jdHJ5KSwgCiAgICAgICAgICAgICBhbHBoYSA9IDAuMiwgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoaGVpZ2h0ID0gMCkpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX3RleHQoZGF0YSA9IGxvYWRpbmdzX25hbWVkICU+JQogICAgICAgICAgICAgIGdyb3VwX2J5KGZhY3RvcikgJT4lCiAgICAgICAgICAgICAgdG9wX24oMSwgYWJzKGxvYWRpbmcpKSAlPiUKICAgICAgICAgICAgICB1bmdyb3VwKCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzQiLCAiV0xTNSIsICJXTFMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzYiLCAiV0xTMyIsICJXTFM3IiwgIldMUzgiKSksCiAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBwYXN0ZTAoImV4YW1wbGUgaXRlbTogIiwgcXVlc3Rpb25fdGV4dCksCiAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25fdGV4dCkpLAogICAgICAgICAgICBhZXMobGFiZWwgPSBxdWVzdGlvbl90ZXh0KSwKICAgICAgICAgICAgeCA9IDAuNSwgeSA9IDQsIGhqdXN0ID0gMCwgdmp1c3QgPSAxLCBzaXplID0gMykgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHggPSAic2l0ZSIsIHkgPSAiZmFjdG9yIHNjb3JlIikKYGBgCgpgYGB7cn0KZF9yZXNwb25zZXNfbmFtZWQgPC0gZF9iYXNlICU+JQogIHNlbGVjdCgtZW5kc193aXRoKCJfbnVtIikpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigidGF2ZXNfc3ViaiIpICU+JQogIGxlZnRfam9pbihkMCAlPiUgZGlzdGluY3QodGF2ZXNfc3ViaiwgdGF2ZXNfY3RyeSkpICU+JQogIGdhdGhlcihxdWVzdGlvbiwgcmVzcG9uc2UsIC1jKHRhdmVzX3N1YmosIHRhdmVzX2N0cnkpKSAlPiUKICBsZWZ0X2pvaW4obG9hZGluZ3NfbmFtZWQgJT4lCiAgICAgICAgICAgICAgZ3JvdXBfYnkocXVlc3Rpb24pICU+JQogICAgICAgICAgICAgIHRvcF9uKDEsIGFicyhsb2FkaW5nKSkgJT4lCiAgICAgICAgICAgICAgdW5ncm91cCgpKSAlPiUKICBtdXRhdGUodGF2ZXNfY3RyeSA9IGZhY3Rvcih0YXZlc19jdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlVTIiwgIkdoYW5hIiwgIlRoYWlsYW5kIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSwKICAgICAgICAgZmFjdG9yID0gZmFjdG9yKGZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIldMUzIiLCAiV0xTNCIsICJXTFM1IiwgIldMUzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0xTNiIsICJXTFMzIiwgIldMUzciLCAiV0xTOCIpKSkKYGBgCgojIyBBdmVyYWdlcyAoMC0xKQoKYGBge3J9CmF2ZXJhZ2VzIDwtIGRfcmVzcG9uc2VzX25hbWVkICU+JQogIGdyb3VwX2J5KGZhY3RvciwgdGF2ZXNfY3RyeSwgdGF2ZXNfc3ViaikgJT4lCiAgbXV0YXRlKHJlc3BvbnNlX251bSA9IHJlY29kZShyZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyIgPSAwLCAieWVzIiA9IDEpKSAlPiUKICBzdW1tYXJpc2UobWVhbiA9IG1lYW4ocmVzcG9uc2VfbnVtLCBuYS5ybSA9IFQpKSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKHRhdmVzX2N0cnkgPSBmYWN0b3IodGF2ZXNfY3RyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoaW5hIiwgIlZhbnVhdHUiKSksCiAgICAgICAgIGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzQiLCAiV0xTNSIsICJXTFMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzYiLCAiV0xTMyIsICJXTFM3IiwgIldMUzgiKSkpCmBgYAoKSGVyZSdzIGEgcGxvdCBvZiBhdmVyYWdlcyAoMC0xKSwgYnkgY291bnRyeSwgdXNpbmcgdGhlIGZhY3RvciBhbmFseXNpcyBzb2x1dGlvbiBpbGx1c3RyYXRlZCBhYm92ZS4gVGhlIGxpZ2h0LCBjb2xvcmZ1bCBkb3RzIGFyZSBpbmRpdmlkdWFsIHBhcnRpY2lwYW50czsgdGhlIGJsb2NrIGRvdHMgYXJlIG1lYW5zIGJ5IGNvdW50cnkgYW5kIDk1JSBib290c3RyYXBwZWQgY29uZmlkZW5jZSBpbnRlcnZhbHMuIEZvciBlYWNoIGZhY3RvciBJIHByaW50ZWQgb3V0IHRoZSB0ZXh0IG9mIHRoZSBpdGVtIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhhdCBmYWN0b3IgLSBzZWUgdGhlIHByZXZpb3VzIGdyYXBoICgyIGdyYXBocyBiYWNrKSBmb3IgbW9yZSBhYm91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGl0ZW1zIGFuZCBmYWN0b3JzLgoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjY3fQphdmVyYWdlcyAlPiUKICBncm91cF9ieShmYWN0b3IsIHRhdmVzX2N0cnkpICU+JQogIGxhbmdjb2c6Om11bHRpX2Jvb3Rfc3RhbmRhcmQoY29sID0gIm1lYW4iLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgbXV0YXRlKGZhY3RvciA9IGZhY3RvcihmYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJXTFMyIiwgIldMUzQiLCAiV0xTNSIsICJXTFMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldMUzYiLCAiV0xTMyIsICJXTFM3IiwgIldMUzgiKSkpICU+JQogIGdncGxvdChhZXMoeCA9IHRhdmVzX2N0cnkpKSArCiAgZmFjZXRfd3JhcCh+IGZhY3RvciwgbnJvdyA9IDIpICsKICBnZW9tX3BvaW50KGRhdGEgPSBhdmVyYWdlcywgCiAgICAgICAgICAgICBhZXMoeSA9IG1lYW4sIGNvbG9yID0gdGF2ZXNfY3RyeSksIAogICAgICAgICAgICAgYWxwaGEgPSAwLjIsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKGhlaWdodCA9IDApKSArCiAgZ2VvbV9wb2ludHJhbmdlKGFlcyh5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLCAKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBsb2FkaW5nc19uYW1lZCAlPiUKICAgICAgICAgICAgICBncm91cF9ieShmYWN0b3IpICU+JQogICAgICAgICAgICAgIHRvcF9uKDEsIGFicyhsb2FkaW5nKSkgJT4lCiAgICAgICAgICAgICAgdW5ncm91cCgpICU+JQogICAgICAgICAgICAgIG11dGF0ZShmYWN0b3IgPSBmYWN0b3IoZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiV0xTMiIsICJXTFM0IiwgIldMUzUiLCAiV0xTMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXTFM2IiwgIldMUzMiLCAiV0xTNyIsICJXTFM4IikpLAogICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbl90ZXh0ID0gcGFzdGUwKCJleGFtcGxlIGl0ZW06ICIsIHF1ZXN0aW9uX3RleHQpLAogICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbl90ZXh0ID0gZ3N1YignKC57MSw0MH0pKFxcc3wkKScsICdcXDFcbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uX3RleHQpKSwKICAgICAgICAgICAgYWVzKGxhYmVsID0gcXVlc3Rpb25fdGV4dCksCiAgICAgICAgICAgIHggPSAwLjUsIHkgPSA0LCBoanVzdCA9IDAsIHZqdXN0ID0gMSwgc2l6ZSA9IDMpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh4ID0gInNpdGUiLCB5ID0gImF2ZXJhZ2UgKDAtMSkiKQpgYGAKCgojIyBSYXcgZGF0YQoKVGhlIGZvbGxvd2luZyBwbG90cyBzaG93IHJhdyBkYXRhOiBob3cgbWFueSBwYXJ0aWNpcGFudHMgc2FpZCB5ZXMgdG8gZWFjaCBxdWVzdGlvbiwgYnJva2VuIGRvd24gYnkgY291bnRyeS4gSSd2ZSBzcGxpdCB1cCB0aGUgcXVlc3Rpb25zIGludG8gd2hpY2ggZmFjdG9yIHRoZXkgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gKHNlZSB0b3AgbGVmdCBjb3JuZXIgb2YgZWFjaCBvZiB0aGUgZm9sbG93aW5nIHBsb3RzKS4gVGhlIGRvdHRlZCBsaW5lIG1hcmtzIHRoZSA1MCUgcG9pbnQgKDUwJSBvZiBwYXJ0aWNpcGFudHMgaW4gdGhhdCBjb3VudHJ5IHNhaWQgInllcyIgdG8gdGhpcyBxdWVzdGlvbikuIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IG1pc3NpbmcgZGF0YSAtIGkuZS4sIHRoZSBwcm9wb3J0aW9uIG9mICJubyIgcmVzcG9uc2VzIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byAxIC0gdGhlIHByb3BvcnRpb24gb2YgInllcyIgcmVzcG9uc2VzLgoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjh9CmRfcmVzcG9uc2VzX25hbWVkICU+JQogIGZpbHRlcihmYWN0b3IgPT0gIldMUzIiKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywgcXVlc3Rpb25fdGV4dCkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSB0YXZlc19jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQofiB0YXZlc19jdHJ5LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3I6IFdMUzIiLAogICAgICAgeCA9ICIiLCB5ID0gInByb3BvcnRpb24gc2F5aW5nIFlFUyIpICsKICB0aGVtZV9idygpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuNn0KZF9yZXNwb25zZXNfbmFtZWQgJT4lCiAgZmlsdGVyKGZhY3RvciA9PSAiV0xTNCIpICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBtdXRhdGUocXVlc3Rpb25fdGV4dCA9IGdzdWIoJyguezEsNDB9KShcXHN8JCknLCAnXFwxXG4nLCBxdWVzdGlvbl90ZXh0KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90ZXh0LCBkZXNjKG9yZGVyKSksIAogICAgICAgICAgICAgZmlsbCA9IHRhdmVzX2N0cnksIGFscGhhID0gcmVzcG9uc2UpKSArCiAgZmFjZXRfZ3JpZCh+IHRhdmVzX2N0cnksIHNjYWxlcyA9ICJmcmVlIikgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUoZ3VpZGUgPSAibm9uZSIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvcjogV0xTNCIsCiAgICAgICB4ID0gIiIsIHkgPSAicHJvcG9ydGlvbiBzYXlpbmcgWUVTIikgKwogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMC42fQpkX3Jlc3BvbnNlc19uYW1lZCAlPiUKICBmaWx0ZXIoZmFjdG9yID09ICJXTFM1IikgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIG11dGF0ZShxdWVzdGlvbl90ZXh0ID0gZ3N1YignKC57MSw0MH0pKFxcc3wkKScsICdcXDFcbicsIHF1ZXN0aW9uX3RleHQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3RleHQsIGRlc2Mob3JkZXIpKSwgCiAgICAgICAgICAgICBmaWxsID0gdGF2ZXNfY3RyeSwgYWxwaGEgPSByZXNwb25zZSkpICsKICBmYWNldF9ncmlkKH4gdGF2ZXNfY3RyeSwgc2NhbGVzID0gImZyZWUiKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShndWlkZSA9ICJub25lIikgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yOiBXTFM1IiwKICAgICAgIHggPSAiIiwgeSA9ICJwcm9wb3J0aW9uIHNheWluZyBZRVMiKSArCiAgdGhlbWVfYncoKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjZ9CmRfcmVzcG9uc2VzX25hbWVkICU+JQogIGZpbHRlcihmYWN0b3IgPT0gIldMUzEiKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywgcXVlc3Rpb25fdGV4dCkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSB0YXZlc19jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQofiB0YXZlc19jdHJ5LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3I6IFdMUzEiLAogICAgICAgeCA9ICIiLCB5ID0gInByb3BvcnRpb24gc2F5aW5nIFlFUyIpICsKICB0aGVtZV9idygpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuOH0KZF9yZXNwb25zZXNfbmFtZWQgJT4lCiAgZmlsdGVyKGZhY3RvciA9PSAiV0xTNiIpICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBtdXRhdGUocXVlc3Rpb25fdGV4dCA9IGdzdWIoJyguezEsNDB9KShcXHN8JCknLCAnXFwxXG4nLCBxdWVzdGlvbl90ZXh0KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90ZXh0LCBkZXNjKG9yZGVyKSksIAogICAgICAgICAgICAgZmlsbCA9IHRhdmVzX2N0cnksIGFscGhhID0gcmVzcG9uc2UpKSArCiAgZmFjZXRfZ3JpZCh+IHRhdmVzX2N0cnksIHNjYWxlcyA9ICJmcmVlIikgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUoZ3VpZGUgPSAibm9uZSIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvcjogV0xTNiIsCiAgICAgICB4ID0gIiIsIHkgPSAicHJvcG9ydGlvbiBzYXlpbmcgWUVTIikgKwogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBmaWcuYXNwID0gMC42fQpkX3Jlc3BvbnNlc19uYW1lZCAlPiUKICBmaWx0ZXIoZmFjdG9yID09ICJXTFMzIikgJT4lCiAgZmlsdGVyKCFpcy5uYShyZXNwb25zZSkpICU+JQogIG11dGF0ZShxdWVzdGlvbl90ZXh0ID0gZ3N1YignKC57MSw0MH0pKFxcc3wkKScsICdcXDFcbicsIHF1ZXN0aW9uX3RleHQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSByZW9yZGVyKHF1ZXN0aW9uX3RleHQsIGRlc2Mob3JkZXIpKSwgCiAgICAgICAgICAgICBmaWxsID0gdGF2ZXNfY3RyeSwgYWxwaGEgPSByZXNwb25zZSkpICsKICBmYWNldF9ncmlkKH4gdGF2ZXNfY3RyeSwgc2NhbGVzID0gImZyZWUiKSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUsIGx0eSA9IDIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShndWlkZSA9ICJub25lIikgKwogIGxhYnModGl0bGUgPSAiRmFjdG9yOiBXTFMzIiwKICAgICAgIHggPSAiIiwgeSA9ICJwcm9wb3J0aW9uIHNheWluZyBZRVMiKSArCiAgdGhlbWVfYncoKSArCiAgY29vcmRfZmxpcCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAwLjZ9CmRfcmVzcG9uc2VzX25hbWVkICU+JQogIGZpbHRlcihmYWN0b3IgPT0gIldMUzciKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uX3RleHQgPSBnc3ViKCcoLnsxLDQwfSkoXFxzfCQpJywgJ1xcMVxuJywgcXVlc3Rpb25fdGV4dCkpICU+JQogIGdncGxvdChhZXMoeCA9IHJlb3JkZXIocXVlc3Rpb25fdGV4dCwgZGVzYyhvcmRlcikpLCAKICAgICAgICAgICAgIGZpbGwgPSB0YXZlc19jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQofiB0YXZlc19jdHJ5LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSwgbHR5ID0gMikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKGd1aWRlID0gIm5vbmUiKSArCiAgbGFicyh0aXRsZSA9ICJGYWN0b3I6IFdMUzciLAogICAgICAgeCA9ICIiLCB5ID0gInByb3BvcnRpb24gc2F5aW5nIFlFUyIpICsKICB0aGVtZV9idygpICsKICBjb29yZF9mbGlwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgZmlnLmFzcCA9IDAuNn0KZF9yZXNwb25zZXNfbmFtZWQgJT4lCiAgZmlsdGVyKGZhY3RvciA9PSAiV0xTOCIpICU+JQogIGZpbHRlcighaXMubmEocmVzcG9uc2UpKSAlPiUKICBtdXRhdGUocXVlc3Rpb25fdGV4dCA9IGdzdWIoJyguezEsNDB9KShcXHN8JCknLCAnXFwxXG4nLCBxdWVzdGlvbl90ZXh0KSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihxdWVzdGlvbl90ZXh0LCBkZXNjKG9yZGVyKSksIAogICAgICAgICAgICAgZmlsbCA9IHRhdmVzX2N0cnksIGFscGhhID0gcmVzcG9uc2UpKSArCiAgZmFjZXRfZ3JpZCh+IHRhdmVzX2N0cnksIHNjYWxlcyA9ICJmcmVlIikgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41LCBsdHkgPSAyKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUoZ3VpZGUgPSAibm9uZSIpICsKICBsYWJzKHRpdGxlID0gIkZhY3RvcjogV0xTOCIsCiAgICAgICB4ID0gIiIsIHkgPSAicHJvcG9ydGlvbiBzYXlpbmcgWUVTIikgKwogIHRoZW1lX2J3KCkgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCgoKCmBgYHtyLCBmaWcud2lkdGggPSAxMiwgZmlnLmFzcCA9IDAuMzMsIGluY2x1ZGUgPSBGfQpkX2Jhc2VfbnVtICU+JQogIHJlbW92ZV9taXNzaW5nKCkgJT4lCiAgZGlzdCgpICU+JSAKICBoY2x1c3QoKSAlPiUKICBwbG90KCkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IEZ9CmhrbWVhbnM4IDwtIGRfYmFzZV9udW0gJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJzdWJpZCIpICU+JQogIGdhdGhlcihxdWVzdGlvbiwgcmVzcG9uc2UsIC1zdWJpZCkgJT4lCiAgbXV0YXRlKHF1ZXN0aW9uID0gZ3N1YigiX251bSIsICIiLCBxdWVzdGlvbikpICU+JQogIGxlZnRfam9pbihsb2FkaW5nc19uYW1lZCAlPiUgZGlzdGluY3QocXVlc3Rpb24sIHF1ZXN0aW9uX3RleHQpKSAlPiUKICBzZWxlY3QoLXF1ZXN0aW9uKSAlPiUKICBzcHJlYWQocXVlc3Rpb25fdGV4dCwgcmVzcG9uc2UpICU+JQogIGNvbHVtbl90b19yb3duYW1lcygic3ViaWQiKSAlPiUKICByZW1vdmVfbWlzc2luZygpICU+JQogIHQoKSAlPiUKICBoa21lYW5zKDgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGZpZy5hc3AgPSAyLCBpbmNsdWRlID0gRn0KaGttZWFuczggJT4lIAogIGZ2aXpfZGVuZChwYWxldHRlID0gIkRhcmsyIiwgaG9yaXogPSBGLCBjb2xvcl9sYWJlbHNfYnlfayA9IFRSVUUpICsgCiAgeWxpbSgtNjAsIDIwKQpgYGAKCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDAuNjgsIGluY2x1ZGUgPSBGfQojIGhrbWVhbnM4ICU+JSBmdml6X2NsdXN0ZXIocGFsZXR0ZSA9ICJEYXJrMiIpCmBgYAoK